package com.autosalon.ui.auth;

import com.autosalon.DAO.DaoFactory;
import com.autosalon.model.Zakaznik;
import com.autosalon.tools.Constants;
import com.autosalon.ui.ContentSwitcher;
import com.autosalon.ui.MainGuiWindow;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Label;
import com.vaadin.ui.Window.Notification;

public class Authentication implements Button.ClickListener {

	public MainGuiWindow window;
	public Zakaznik zakaznik;

	public Authentication(MainGuiWindow window) {
		this.window = window;

	}

	@Override
	public void buttonClick(ClickEvent event) {
		String email = window.getUsername().getValue().toString();
		String heslo = window.getPassword().getValue().toString();
		if (email.isEmpty() || heslo.isEmpty()) {
			window.showNotification("Email i heslo musí být vyplněno!",
					Notification.TYPE_WARNING_MESSAGE);
		} else {
			
			try {
				zakaznik = (Zakaznik) DaoFactory.getinstance().getZakaznik()
						.getOneByParam(Constants.DB_ZAKAZNIK_EMAIL, email);
				if (zakaznik.getPassword().equals(heslo)) {
					window.reInit(zakaznik.getRole().getId().intValue());
					window.setZakaznik(zakaznik);
					window.getLoginLayout().removeAllComponents();
					window.setZakaznik(zakaznik);
					window.getLoginLayout().addComponent(
							new Label("Přihlášen jako " + zakaznik.getMeno() + " "
									+ zakaznik.getPrimeni()));
					window.getSwitcher().setContent(ContentSwitcher.HOME_PANEL);
					Button btnLogOut = new Button("Log out");
					btnLogOut.addListener(new Button.ClickListener() {

						@Override
						public void buttonClick(ClickEvent event) {
							window.initLoginLayout();
							window.setZakaznik(null);
							window.reInit(1);
							window.getSwitcher().setContent(ContentSwitcher.HOME_PANEL);
						}
					});
					window.getLoginLayout().addComponent(btnLogOut);

				}else{
					window.showNotification(
							"Nekorektní přihlášení, špatné heslo, zkuste to znovu.",
							Notification.TYPE_WARNING_MESSAGE);
				}
			} catch (Exception ex) {
				window.showNotification(
						"Nekorektní přihlášení, danému emailu nenáleží žádný účet.",
						Notification.TYPE_WARNING_MESSAGE);
			}

			
		}

	}

	public Zakaznik getZakaznik() {
		return zakaznik;
	}
}
